package com.gpnu7_412.yanzhi.mapper;

import com.gpnu7_412.yanzhi.dto.ConciseUserDto;
import com.gpnu7_412.yanzhi.entity.Interest;
import com.gpnu7_412.yanzhi.entity.User;

import java.util.List;

/**
 * @author HJJ
 */
public interface InterestMapper {
    /**
     * 新增关注关系
     * @param interest 关注对象
     * @return 影响条数
     */
    Integer insert(Interest interest);

    /**
     * 删除关注关系
     * @param userId 关注者ID
     * @param likeUserId 被关注者ID
     * @return 影响条数
     */
    Integer delete(Integer userId, Integer likeUserId);

    /**
     * 删除用户所关注的用户
     * @param userId 用户ID
     * @return 影响条数
     */
    Integer deleteMyInterestByUserId(Integer userId);

    /**
     * 删除关注了该用户的用户
     * @param userId 用户ID
     * @return 影响条数
     */
    Integer deleteInterestMeByUserId(Integer userId);

    /**
     * 获取所有关注的用户
     * @param userId 用户ID
     * @return 关注列表
     */
    List<User> selectMyInterestList(Integer userId);

    /**
     * 获取用户所有粉丝
     * @param userId 用户ID
     * @return 粉丝列表
     */
    List<User> selectFansList(Integer userId);



    /**
     * 获取用户关注列表
     * @param userId 用户ID
     * @return 简洁用户对象列表
     */
    List<ConciseUserDto> selectLikes(Integer userId);

    /**
     * 获取用户粉丝列表
     * @param userId 用户ID
     * @return 简洁用户对象列表
     */
    List<ConciseUserDto> selectFans(Integer userId);

    Interest selectLike(Integer userId, Integer likeUserId);
}
